package Vue;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.EmptyBorder;

import Controleur.StationFrame_AjoutListener;
import Controleur.StationFrame_OkBtn;
import Controleur.StationFrame_SuppListener;

/**
 * Définit la fenêtre de détail d'une station
 */
public class StationFrame extends JDialog {

	private static final long serialVersionUID = -3334552065058641052L;
	/** Contient les elements graphiques */
	private JPanel contentPane;
	/** Champ contenant les nombre de vélos garés en station */
	private JTextField Field_VeloAct;
	/** Champ contenant le nombre de vélos maximum que peut accueillir la station */
	private JTextField Field_VeloMax;
	/** Bouton permettant l'ajout de vélo */
	JButton btnAjoutVelo = new JButton("Ajouter un/des v\u00E9lo(s)");
	/** Entier contenant le nombre de vélos actuellement en station */
	private int s_nbVeloActuels;



	/**
	 * Crée la fenetre de détail de la station 
	 * @param idStation  Id de la station détaillée
	 * @param s_intitule Nom de la station
	 * @param s_nbMaxVelo Nombre de vélo maximum pouvant accueillir la station
	 * @param s_nbVeloActuels Nombre de vélos actuellement dans la station
	 * @param map Carte
	 */
	public StationFrame(int idStation, String s_intitule, int s_nbMaxVelo, int s_nbVeloActuels, Map map) {
		
		this.s_nbVeloActuels = s_nbVeloActuels;
		
		//setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
		setModal(true);
		setBounds(100, 100, 427, 290);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new BorderLayout(0, 0));

		JPanel panel_btn_stations = new JPanel();
		panel_btn_stations.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
		panel_btn_stations.setBackground(Color.WHITE);
		contentPane.add(panel_btn_stations, BorderLayout.SOUTH);

		JButton btnSuppStation = new JButton("Supprimer la station");
		btnSuppStation.setForeground(new Color(0, 0, 128));
		
		btnSuppStation.addActionListener(new StationFrame_SuppListener(this,map,idStation));
		

		
		btnAjoutVelo.setForeground(new Color(0, 0, 139));
		panel_btn_stations.setLayout(new GridLayout(0, 2, 0, 0));
		panel_btn_stations.add(btnAjoutVelo);
		panel_btn_stations.add(btnSuppStation);
		
		btnAjoutVelo.addActionListener(new StationFrame_AjoutListener(this,idStation));

		JPanel panel_tableau = new JPanel();
		contentPane.add(panel_tableau, BorderLayout.CENTER);
		panel_tableau.setLayout(null);

		JLabel lblNomStation = new JLabel(s_intitule);
		lblNomStation.setBounds(136, 13, 121, 17);
		lblNomStation.setFont(new Font("Tahoma", Font.BOLD, 14));
		lblNomStation.setHorizontalAlignment(SwingConstants.CENTER);
		panel_tableau.add(lblNomStation);

		JLabel lblNombreDeVelo = new JLabel("V\u00E9los \u00E0 la station : ");
		lblNombreDeVelo.setBounds(35, 60, 111, 16);
		panel_tableau.add(lblNombreDeVelo);

		JLabel lblVlosMaximum = new JLabel("V\u00E9los maximum \u00E0 la station : ");
		lblVlosMaximum.setBounds(35, 103, 201, 16);
		panel_tableau.add(lblVlosMaximum);

		Field_VeloAct = new JTextField();
		Field_VeloAct.setEnabled(false);
		Field_VeloAct.setBounds(226, 57, 116, 22);
		remplirField();
		panel_tableau.add(Field_VeloAct);
		Field_VeloAct.setColumns(10);

		Field_VeloMax = new JTextField();
		Field_VeloMax.setColumns(10);
		Field_VeloMax.setBounds(226, 100, 116, 22);
		this.Field_VeloMax.setText(String.valueOf(s_nbMaxVelo));
		panel_tableau.add(Field_VeloMax);
		
		JButton btnOk = new JButton("OK");
		btnOk.setForeground(new Color(0, 128, 0));
		btnOk.setFont(new Font("Tahoma", Font.BOLD, 13));
		btnOk.setBounds(338, 97, 61, 29);
		panel_tableau.add(btnOk);
		
		btnOk.addActionListener(new StationFrame_OkBtn(this,idStation));
		
		
	}
	/**
	 * Getter Champ contenant le nombre de vélos max
	 * @return Field_VeloMax
	 */
	public JTextField getField_VeloMax() {
		return Field_VeloMax;
	}
	/**
	 * Remplis le champs Velo actuels par le nombre de vélos actuels
	 */
	public void remplirField(){
		this.Field_VeloAct.setText(String.valueOf(s_nbVeloActuels));
	}
	
	/**
	 * Définit le nombre de vélos actuellement en station
	 * @param s_nbVeloActuels nombre de vélos en station
	 */
	public void setS_nbVeloActuels(int s_nbVeloActuels) {
		this.s_nbVeloActuels = s_nbVeloActuels;
	}
	/**
	 * Méthode fermant la fenetre
	 */
	public void close(){this.dispose();}
}